package com.ntschy.taizhou.leetcode;

//  不会
public class _0283_MoveZeroes {

    // 1
    public void moveZeroes(int[] nums) {
        int index = 0;
        int count = nums.length;

        for (int i = 0; i < count; i++) {
            if (nums[i] == 0){
                continue;
            }
            if (index < i) {
                nums[index] = nums[i];
            }
            index++;
        }
        for (int i = index; i < count; i++) {
            nums[i] = 0;
        }
    }

    // 2 直接用指针保存相对位置，然后覆盖值，最后补0，完全不需要交换
    public void moveZeroes2(int[] nums) {
        int index = 0;
        for(int i = 0;i< nums.length;i++){
            if(nums[i] != 0){
                nums[index] = nums[i];
                index++;
            }
        }
        for(int i = index;i< nums.length;i++){
            nums[i] = 0;
        }
    }




// 自己练习
    public void moveZeroes3(int[] nums) {
        int index=0;
        for (int i = 0; i < nums.length; i++) {
            if(nums[i]!=0){
                nums[index]=nums[i];
                index++;
            }
        }
        for (int i = index; i < nums.length; i++) {
            nums[i]=0;
        }



    }
















    public static void main(String[] args) {
        _0283_MoveZeroes moveZeroes = new _0283_MoveZeroes();
        //int[] num={0,5,3};
      //  int[] num={0,5,0,3};
        int[] num={5,0,3};
        //moveZeroes.moveZeroes(num);
        moveZeroes.moveZeroes2(num);
    }


}
